import Interpreter from '@/common/interpreter';
import { interpretSpecialCommands } from './run_command'

// isFlowLogic:true 解析结束不需要自定义解析逻辑
// isFlowLogic:false 需要自定义解析逻辑
// byPass: true 自定义解析逻辑已经解析完成不需要再执行（日志，变量等）
// byPass: false 自定义解析逻辑解析后发现需要自定义交互页面逻辑去处理

/**
 * 解释器用来解释命令
 * run判断是否为isFlowLogic(不需要处理的命令，onError，gotoLabel，
 * commond.alreadyRun,else,break,continue,comment,label,do,)这些不需要__customRun
 * 其他命令执行__customRun，具体的命令解析由opts.run提供
 * 如果run中给出了nextIndex,则执行nextIndex
 * 如歌run中没有给出nextIndex,则将执行postRun来计算nextIndex
 * 先解析命令，得到命令的解析结果，再根据解析结果执行命令，有执行结果的命令标记byPass
 * 剩下的具体的页面的交互逻辑在interpreter.run().then中进一步添加自定义实现完成
 */
export const interpreter = new Interpreter({
    run: interpretSpecialCommands
})
